# -*- coding: utf-8 -*-
from django.contrib import admin
from app.models import Facultad, Periodo, Estudiante, Matricula, Configuracion,\
    Pagos, LogMensajes


class LogMensajesAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'configuracion',
            'fecha',
            'estudiante',
            'tipo',
            'destino',]}),
    ]
    
    list_display = (
        'configuracion',
        'fecha',
        'estudiante',
        'tipo',
        'destino',
    )
    
    readonly_fields = ('configuracion', 'fecha', 'estudiante', 'tipo', 'destino')
    list_filter = ['configuracion', 'tipo']
    search_fields = ('configuracion', 'estudiante', 'tipo', 'destino')
    
    
class FacultadAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'sigla',
            'nombre',
            'semestres',]}),
    ]
    
    list_display = (
        'sigla',
        'nombre',
        'semestres',
    )
    
    list_filter = ['semestres',]
    search_fields = ('sigla', 'nombre', 'semestres')
    
    
class PeriodoAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'nombre',
            'fecha_inicio',
            'fecha_fin',
            'corte_fin_mes',
            'meses']}),
    ]
    
    list_filter = ['meses','fecha_inicio','fecha_fin',]
    
    list_display = (
        'nombre',
        'fecha_inicio',
        'fecha_fin',
        'corte_fin_mes',
        'meses'
    )
    
    search_fields = ('nombre', 'fecha_inicio', 'fecha_fin', 'corte_fin_mes', 'meses')


class MatriculaInline(admin.TabularInline):
    model = Matricula
    extra = 1

    
class EstudianteAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Información básica', {'fields': [
            'nombre1',
            'nombre2',
            'apellido1',
            'apellido2',
            'tipo_documento',
            'identificacion',
            'direccion',
            'telefono',
            'celular',
            'email',
            'observacion',
            ]}),
        ('Información institucional', {'fields': [
            'configuracion',
            ]}),
        ('Información de codeudor', {'fields': [
            'codeudor',
            'codeudor_telefono',
            'codeudor_celular',
            'codeudor_email',
            ]}),
    ]
    
    list_display = (
        'nombre1',
        'nombre2',
        'apellido1',
        'apellido2',
        'identificacion',
        'direccion',
        'telefono',
        'celular',
        'email',
        'codeudor',
        'configuracion'
    )
    
    inlines = [MatriculaInline,]
    
    list_filter = ['codeudor', 'configuracion__institucion']
    
    search_fields = ('nombre1', 'nombre2', 'apellido1', 'apellido2', 'identificacion', 'email', 'codeudor', 'configuracion__institucion')
    
    
class PagosInline(admin.TabularInline):
    model = Pagos
    extra = 1

    
class MatriculaAdmin(admin.ModelAdmin):
    raw_id_fields = ('estudiante', )
    
    fieldsets = [
        ('Información básica', {'fields': [
            'estudiante',
            'facultad',
            'periodo',
            'semestre',
            'fecha',
            'valor_credito',
            'cuotas',
            'saldo',
            'cuotas_pendientes',
            ]}),
    ]
    
    list_display = (
        'estudiante',
        'facultad',
        'periodo',
        'semestre',
        'fecha',
        'valor_credito',
        'cuotas',
        'saldo',
    )
    
    inlines = [PagosInline,]
    
    list_filter = ['facultad','periodo','semestre',]
    
    search_fields = ('estudiante', 'facultad', 'periodo', 'semestre', 'valor_credito', 'cuotas')
    
    
class ConfiguracionAdmin(admin.ModelAdmin):
    raw_id_fields = ('usuario', )
        
    fieldsets = [
        ('Información básica', {'fields': [
            'usuario',
            'institucion',
            'logo',
            'recordatorio_sms',
            'recordatorio_email',
            'sms_moroso',
            'email_moroso',
            'tasa_interes',
#            'email',
            ]}),
    ]
    
    list_display = (
        'institucion',
        'usuario',
        'recordatorio_sms',
        'recordatorio_email',
        'sms_moroso',
        'email_moroso',
        'tasa_interes',
#        'email',
    )
    
    list_filter = ['institucion','recordatorio_sms','recordatorio_email','sms_moroso','email_moroso','tasa_interes',]
    
    search_fields = ('institucion',)


class PagosAdmin(admin.ModelAdmin):    
    raw_id_fields = ('matricula', )
    
    fieldsets = [
        ('Información básica', {'fields': [
            'matricula',
            'cuota_id',
            'fecha',
            'valor',
            'fecha_pago',
            'pagado',
            'cancelada',
            'observacion',
            ]}),
    ]
    
    list_display = (
        'matricula',
        'cuota_id',
        'fecha',
        'valor',
        'fecha_pago',
        'pagado',
        'cancelada',
        'observacion',
    )
    
    list_filter = ['cuota_id','matricula','cancelada','fecha', 'fecha_pago']
    
    search_fields = ('cuota_id', 'matricula', 'fecha', 'fecha_pago')
        

#===============================================================================
#AGREGAR VISTAS A INTERFAZ ADMIN 
#===============================================================================
admin.site.register(Facultad, FacultadAdmin)
admin.site.register(Periodo, PeriodoAdmin)
admin.site.register(Estudiante, EstudianteAdmin)
admin.site.register(Matricula, MatriculaAdmin)
admin.site.register(Configuracion, ConfiguracionAdmin)
admin.site.register(Pagos, PagosAdmin)
admin.site.register(LogMensajes, LogMensajesAdmin)
